import java.util.Scanner;

/**
 * Created by L.jp
 * Description:
 * 牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.
 * 如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2
 * 输入描述:
 * 输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
 * 第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。
 * 输出描述:
 * 输出一个整数表示牛牛可以将A最少划分为多少段排序子序列
 * 示例1
 * 输入
 * 6
 * 1 2 3 2 2 1
 * 输出
 * 2
 * User: 86189
 * Date: 2022-01-19
 * Time: 17:49
 */
//非递增和非递减的定义是：整体是递增或递减的，但是里面存在相等的数
    //思路：定义一个i变量遍历数组每个元素，判断当前i下标元素跟下一个元素的关系，要么是大，要么是小，要么相等
    //如果小或者相等，那么就i++。只要遇到比当前大的时候，说明已经找到一个非递增序列，就让count++；
// 反之，则说明找到一个非递减序列，count++;
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] array = new int[n+1];//防止到了最后，判断array[i]与array[i+1]的关系时越界
        for(int i = 0; i < n; i++){
            array[i] = scanner.nextInt();
        }
        //遍历数组
        int i=0;
        //记录子序列的个数
        int count=0;
        while(i< n){
            //判断三种情况
            if(array[i]<array[i+1]){
                //遍历这段递增区间
                while(i<n && array[i]<array[i+1]){
                    i++;
                }
                //说明遇到了一个符合要求的序列
                count++;
                i++;//遍历完一个递增序列，到下一个位置
            }else if(array[i] == array[i+1]){
                //如果相等的话，就让它++，去判断下一个位置
                i++;
            }else{
                //如果遇到递减区间，道理一样的，i++,遇到结尾或者不是递减的就会退出，让count++,i++,去判断下一段
                while(i<n && array[i]> array[i+1]){
                    i++;
                }
                count++;
                i++;
            }
        }
        //这里无论是遇到非递增序列还是非递减序列，都会导致最后，i进入循环，因为i遍历到数组最后一个元素i<n,但是此时后面没有元素了
        //没有i+1元素，访问不了i+1的元素，所以会越界，所以要想办法让数组多出一个位置，那就是让数组长度为n+1,那么数组最后一个位置就
        //变成了0，在这里0是和题目不冲突的，因为n>=1
        //遍历完成，打印count;
        System.out.println(count);

    }
}
